1. Technical Field of the Invention
The present invention relates to the compression of messages in communications using data protocols, e.g. Internet protocols.
2. Background and Objects of the Present Invention
Two communication technologies that have become widely used by the general public in recent years are cellular telephony and the Internet. Some of the benefits that have been provided by cellular telephony have been freedom of mobility and accessability with reasonable service quality despite a user's location. Until recently the main service provided by cellular telephony has been speech. In contrast, the Internet, while offering flexibility for different types of usage, has been mainly focused on fixed connections and large terminals. However, the experienced quality of some services, such as Internet telephony, has generally been regarded as quite low.
A number of Internet Protocols (IPs) have been developed to provide for communication across the Internet and other networks. Still another example of such an Internet protocol is the Session Initiation Protocol (SIP), which is an application layer protocol for establishing, modifying, and terminating multimedia sessions or calls. These sessions may include Internet multimedia conferences, Internet telephony, and similar applications. As is understood in the art, SIP can be used over either the Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP).
Another example of an Internet Protocol is the Real Time Streaming Protocol (RTSP), which is an application level protocol for control of the delivery of data with real-time properties, such as audio and video data. RTSP may also be used with UDP, TCP, or other protocols as a transport protocol. Still another example of an Internet Protocol is the Session Description Protocol (SDP), which is used to advertise multimedia conferences and communicate conference addresses and conference tool-specific information. SDP is also used for general real-time multimedia session description purposes. SDP is carried in the message body of SIP and RTSP messages. SIP, RTSP, and SDP are all ASCII text based using the ISO 10646 character set in UTF-8 encoding.
Due to new technological developments, Internet and cellular telephony technologies are beginning to merge. Future cellular devices will contain an Internet Protocol (IP) stack and support voice over IP as well as web-browsing, e-mail, and other desirable services. In an “all-IP” or “IP all the way” implementation, Internet Protocols are used end-to-end in the communication system. In a cellular system this may include IP over cellular links and radio hops. Internet Protocols may be used for all types of traffic including user data, voice or streaming data, and control data, such as SIP or RTSP data. Such a merging of technologies provides for the flexibility advantages of IP along with the mobility advantages of cellular technology.
As is understood in the art, the SIP, RTSP, and SDP protocols share similar characteristics which have implications in their use with cellular radio access. One of these similarities is the general request and reply nature of the protocols. Typically, when a sender sends a request, the sender stays idle until a response is received. Another similarity, as previously described, is that SIP, RTSP, and SDP are all ASCII text based using the ISO 10646 character set with UTF-8 encoding. As a result, information is usually represented using a greater number of bits than would be required in a binary representation of the same information. Still another characteristic that is shared by the protocols is that they are generally large in size in order to provide the necessary information to session participants.
A disadvantage with IP is the relatively large overhead the IP protocol suite introduces due to large headers and text-based signaling protocols. It is very important in cellular systems to use the scarce radio resources in an efficient manner. In cellular systems it is important to support a sufficient number of users per cell, otherwise implementation and operation costs will be prohibitive. Frequency spectrum, and thus bandwidth, is a costly resource in cellular links and should be used efficiently to maximize system resources.
In the UMTS and EDGE mobile communication systems and in future releases of second generation systems, such as GSM and IS-95, much of the signaling traffic will be performed by using Internet protocols. However as discussed, most of the Internet protocols have been developed for fixed, relatively broadband connections. When access occurs over narrow band cellular links, compression of the protocol messages is needed to meet quality of service requirements such as set-up time and delay. Typically, compression over the entire communication path is not needed. However, compression of traffic over the radio link, such as from a wireless user terminal to a core network, is greatly desirable.
Standard binary compression methods, such as Lempel-Ziv and Huffman coding, are very general in the sense that they do not utilize any explicit knowledge of the structure of the data to be compressed. The use of such methods on Internet data protocols, e.g., SIP and RTSP, present difficulties for the efficient compression of communication messages. Standard binary compression methods available today are typically designed for large data files. As a consequence, use of such methods for the compression of small messages or messages with few repeated strings results in compression performance generally regarded as very poor. In fact, if the message to be compressed is small and/or contains few repeated strings, the use of some standard compression methods may result in a compressed packet which is actually larger than the original uncompressed packet, thereby achieving a counterproductive result.
One method for implementing a binary compression scheme is the use of dictionary based compression techniques. In general, a dictionary compression scheme uses a data structure known as a dictionary to store strings of symbols which are found in the input data. The scheme reads in input data and looks for strings of symbols which match those in the dictionary. If a string match is found, a pointer or index to the location of that string in the dictionary is output and transmitted instead of the string itself. If the index is smaller than the string it replaces, compression will occur. A decompressor contains a representation of the compressor dictionary, so that the original string may be reproduced from the received index. An example of a dictionary compression method is the Lempel-Ziv (LZ77) algorithm. This algorithm operates by replacing character strings which have previously occurred in the file by references to the previous occurrence. This method is, of course, particularly successful in files where repeated strings are common.
Dictionary compression schemes may be generally categorized as either static or dynamic. A static dictionary is a predefined dictionary, which is constructed before compression occurs, and which does not change during the compression process. Static dictionaries are typically either stored in the compressor and decompressor prior to use, or transmitted and stored in memory prior to the start of compression operations.
A dynamic or adaptive dictionary scheme, on the other hand, allows the contents of the dictionary to change as compression occurs. In general, a dynamic dictionary scheme starts out with either no dictionary or a default, predefined dictionary and adds new strings to the dictionary during the compression process. If a string of input data is not found in the dictionary, the string is added to the dictionary in a new position and assigned a new index value. The new string is transmitted to the decompressor so that it can be added to the dictionary of the decompressor. The position of the new string does not have to be transmitted, as the decompressor will recognize that a new string has been received, and will add the string to the decompressor dictionary in the same position in which it was added in the compressor dictionary. In this way, a future occurrence of the string in the input data can be compressed using the updated dictionary. As a result, the dictionaries at the compressor and decompressor are constructed and updated dynamically as compression occurs.
One method of dictionary compression is of the type known as sliding window compression. In this method the compressor moves a fixed-size sliding window from left to right through the file during compression. The compression algorithm searches the file to the left of the window for matches to strings currently in the window. If a match is found the string is replaced by a reference to the location of the match within the file along with a reference to the length of the match. Alternately, the window may be a text window of a large block of recently decoded text and a look-ahead buffer. In this version, the look-ahead buffer is used to search for matches within the text window. If a match is found the string is replaced by a reference to the location of the match within the text window and reference to the length of the match. This information is used by the decompressor which maintains the same dictionary to reproduce the original information.
Another method for the compression of data is the use of a binary code tree. In a binary code tree, symbols or strings which are to be compressed are represented in a tree structure by a variable number of bits such that each symbol is uniquely decodable. Typically, symbols with higher probabilities of occurrence in the input data are represented by a shorter number of bits than those which have lower probabilities of occurrence. In the construction of the binary code tree, individual symbols are laid out as a string of leaf nodes connected to a binary tree. Symbols with higher probabilities of occurrence are represented as shorter branches of the tree resulting in a fewer number of bits being required to represent them. Conversely, symbols with lower probabilities of occurrence are represented as longer branches of the tree requiring a greater number of representation bits. When a string of input data matches a symbol in the binary code tree of the compressor, the code of the symbol is transmitted instead of the symbol itself resulting in data compression. A decompressor receiving the code reconstructs the original symbol or string using an identical binary code tree.
Similarly to dictionary compression, binary code trees may be static or dynamic. In a static binary code tree scheme, a predefined binary code tree is constructed prior to compression and does not change during the compression process. As with static dictionaries, static binary code trees may be stored in the compressor and decompressor in advance, or transmitted and stored prior to the start of compression.
A dynamic or adaptive binary code tree allows for the addition of new symbols or strings to the code tree during the compression process. Various methods may be used to update the nodes of the tree according to the type of binary code tree compression used to allow for the addition of new symbols and the rearrangement of the code tree. The binary code tree in the decompressor must also be updated according to the same rules as the binary code tree in the compressor.
One example of a binary code tree compression scheme is that of a Huffman coding compression scheme. Huffman compression is a general compression method intended primarily for compression of ASCII files. Characters occurring frequently in the files are replaced by shorter codes, i.e. codes with less than the 8 bits used by the ASCII code. Huffman compression can be successful in files where relatively few characters are used.
A general criteria for successful compression using the aforementioned binary compression algorithms is that the file to be compressed is reasonably large. The codes for Huffman compression must not be too large compared to the file which is being compressed. For standard Lempel-Ziv compression, the file to be compressed must be large enough to have many repeated strings to achieve efficient compression. The messages produced by the aforementioned protocols are mostly a few hundred bytes and not large enough to allow efficient compression with the aforementioned algorithms on a message by message basis.
One technique for compressing communication messages is that of header compression. Header compression is used to reduce the size of a communication message or packet by removing or reducing the size of header fields within the communication message. Header compression relies on many fields of a header remaining constant or changing very little in consecutive packets belonging to the same packet stream. Fields that do not change between packets do not need to be transmitted at all, whereas fields that change often with small and/or predictable values can be encoded incrementally so that the number of bits needed for these fields may be significantly decreased. Only fields that change often and randomly, such as checksums or authentication data, need to be transmitted in every header. Header compression is performed in such a way that a decompressor can reconstruct the header if its context state is identical to the context state used when compressing the header.
In header compression techniques, the context state is the state which a compressor uses to compress a header and a decompressor uses to decompress a compressed header. The context contains relevant information from the current and previous headers in the current packet stream, such as static fields and possible reference values for compression and decompression. Additional information describing the packet stream, such as information about how the IP identifier field changes and the typical inter-packet increase in sequence numbers or timestamps, may also be part of the context.
The context may include both a static and dynamic part. The static part includes static fields that are expected to be constant throughout the lifetime of the packet stream. Examples of static fields within an Internet Protocol Version 6 (IPv6) header include the IP (Internet Protocol) version field, flow label field, payload length field, next header field, source IP address, and destination IP address. The dynamic part includes fields within the header which are expected to vary within the packet stream. Examples of dynamic IPv6 header fields include the traffic class field and the hop limit field.
Examples of static header fields within an Internet Protocol Version 4 (IPv4) packet stream include the IP version field, the protocol field, the source IP address, and the destination IP address. Examples of dynamic header fields within an IPv4 packet stream include the type-of-service field, the time-to-live field, and the identification field. Examples of static UDP (User Datagram Protocol) header fields include the source port field and the destination port field. An example of a static field within a RTP (Real-time Transport Protocol) header includes the sending source (SSRC) field.
The aforedescribed packet stream is a sequence of packets whose headers are similar and share context information, such as a common source and destination address. The context information for a packet stream is associated with a context identifier (CID). The context identifier (CID) is a small unique number identifying the context that should be used to decompress a compressed header within the packet stream. The context information is conceptually stored in a table which is indexed using the context identifier (CID). The context identifier (CID) is carried in both full headers and compressed headers during the transmission of communication messages.
The general principle of header compression is to occasionally send a packet with a full, uncompressed header including the context information of the current communication message. Packet headers used in subsequent communication messages refer to the context established by the full header and may include incremental changes to the context. Compression of the communication messages is achieved because the full context information does not have to be included in the subsequent messages which use the same context information.
A need exists in the art for increasing the efficiency and performance of the signalling protocols used for compression of messages over bandwidth limited communication links and channels.